package com.tdam2013.grupo12.webMessaging;

import java.util.Calendar;
import java.util.Date;
import java.util.Stack;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

import android.content.Context;
import android.util.Log;

import com.tdam2013.grupo12.clasesDeNegocio.Accion;
import com.tdam2013.grupo12.clasesDeNegocio.BaseDeDatos;
import com.tdam2013.grupo12.clasesDeNegocio.Mensaje;

public class ConsultarMensajesHandler extends DefaultHandler {

	private Resultado resultado;
	private Context c;
	private Stack currentElement = new Stack();
	private Mensaje m;
	
	public ConsultarMensajesHandler(Context c){
		this.c=c;
		resultado = new Resultado();
	}
	
	public Resultado getResultado() {
		return resultado;
	}

	@Override
	public void characters(char[] ch, int start, int length)
			throws SAXException {
		super.characters(ch, start, length);
		String cdata = new String(ch, start, length);
		m.setDescripcion(cdata);
	    Log.e("CDATA", "Element '" + currentElement.peek()
	      + "' contains text: " + cdata);
	}

	@Override
	public void startElement(String uri, String localName, String name,
			Attributes attributes) throws SAXException {
		m = null;
		super.startElement(uri, localName, name, attributes);
		currentElement.push(name);
		if (name.equals("result")) {
			resultado.setType(attributes.getValue(attributes.getIndex("type")));
			resultado.setId(attributes.getValue(attributes.getIndex("id")));
		} else if (name.equals("detail")) {
			resultado.setCodigoError(Integer.parseInt(attributes
					.getValue(attributes.getIndex("code"))));
			resultado.setDescripcionError(attributes.getValue(attributes
					.getIndex("description")));
		} else if (name.equals("message")) {
			m = new Mensaje();
			resultado.addMensaje(m);
			String fechaString = attributes.getValue(attributes
					.getIndex("timestamp"));
			int dia = Integer.parseInt(fechaString.substring(0, 2));
			int mes = Integer.parseInt(fechaString.substring(3, 5))-1;
			int anio = Integer.parseInt(fechaString.substring(6, 10))-1900;
			int hora = Integer.parseInt(fechaString.substring(11, 13));
			int minutos = Integer.parseInt(fechaString.substring(14, 16));
			int segundos = Integer.parseInt(fechaString.substring(17));
			m.setFechaYHora(new Date(anio, mes, dia, hora, minutos, segundos));
			m.setNombreContacto(attributes.getValue(attributes
					.getIndex("from")));
			m.setNombreContacto(m.getNombreContacto());
			m.setTipo("Recibido");
		}
	}
}
